package jp.ac.keio.sfc.crew.dasaitama.map;

import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.RectF;

import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.Projection;

public class MyOverLay extends Overlay {
	private GeoPoint gp1;
	private GeoPoint gp2;
	private int mRadius=6;
	private int mode=0;
	private int defaultColor;
	private String text="";
	private Bitmap img = null;

	public MyOverLay(GeoPoint gp1,GeoPoint gp2,int mode) {
		// TODO Auto-generated constructor stub
		this.gp1 = gp1;
		this.gp2 = gp2;
		this.mode = mode;
		defaultColor = 999; // no defaultColor

	}

	public MyOverLay(GeoPoint gp1,GeoPoint gp2,int mode, int defaultColor) {
		// TODO Auto-generated constructor stub
		this.gp1 = gp1;
		this.gp2 = gp2;
		this.mode = mode;
		this.defaultColor = defaultColor;
	}
	
	public void setText(String t)
	{
	this.text = t;
	}
	public void setBitmap(Bitmap bitmap)
	{
	this.img = bitmap;
	}
	public int getMode()
	{
	return mode;
	}

	@Override
	public boolean draw
	(Canvas canvas, MapView mapView, boolean shadow, long when)
	{
	Projection projection = mapView.getProjection();
	if (shadow == false)
	{
	Paint paint = new Paint();
	paint.setAntiAlias(true);
	Point point = new Point();
	projection.toPixels(gp1, point);
	// mode=1&#65306;start
	if(mode==1)
	{
	if(defaultColor==999)
	paint.setColor(Color.BLUE);
	else
	paint.setColor(defaultColor);
	RectF oval=new RectF(point.x - mRadius, point.y - mRadius,
	point.x + mRadius, point.y + mRadius);
	// start point
	canvas.drawOval(oval, paint);
	}
	// mode=2&#65306;path
	else if(mode==2)
	{
	if(defaultColor==999)
	paint.setColor(Color.RED);
	else
	paint.setColor(defaultColor);
	Point point2 = new Point();
	projection.toPixels(gp2, point2);
	paint.setStrokeWidth(4);
	paint.setAlpha(120);
	canvas.drawLine(point.x, point.y, point2.x,point2.y, paint);
	}
	/* mode=3&#65306;end */
	else if(mode==3)
	{
	/* the last path */

	if(defaultColor==999)
	paint.setColor(Color.BLUE);
	else
	paint.setColor(defaultColor);
	Point point2 = new Point();
	projection.toPixels(gp2, point2);
	paint.setStrokeWidth(4);
	paint.setAlpha(120);
	canvas.drawLine(point.x, point.y, point2.x,point2.y, paint);
	RectF oval=new RectF(point2.x - mRadius,point2.y - mRadius,
	point2.x + mRadius,point2.y + mRadius);
	/* end point */
	paint.setAlpha(255);
	canvas.drawOval(oval, paint);
	}
	}
	return super.draw(canvas, mapView, shadow, when);
	}

}
